package day02;

import java.io.*;


import java.io.IOException;

/**
 * 将当前目录下的所有文件都复制一份，复制的文件命名为:原
 * 文件名_cp.后缀
 * 比如原文件为:test.dat
 * 复制后的文件为:test_cp.dat
 *
 * @author Xiloer
 */
public class Test02_3 {
    public static void main(String[] args) throws IOException {


        /**
         * 遍历指定目录下的子文件
         */
        File dir = new File("./File/");
        if (dir.isDirectory()) {  //判断是否是一个文件夹
            System.out.println(dir.getName() + "是一个文件夹");
        }
//        File[] subs = dir.listFiles(); //遍历所有文件，存入到数组中
        File[] subs = dir.listFiles(f->f.isFile()); //遍历所有文件，存入到数组中
        for (File i : subs) {
            String name = i.getName(); //获取每个文件的名字
            /**
             * 创建文件流
             */
            FileInputStream fis = new FileInputStream("./File/" + name);
            BufferedInputStream bis = new BufferedInputStream(fis);
            /**
             * 对旧文件的名字进行加工
             */
            String newName = name.split("\\.")[0];  //.之前的文件放在newname中
            newName = newName + "_copy" + "." + name.split("\\.")[1];
            /**
             * 创建新文件并且+名字
             */
            FileOutputStream fos = new FileOutputStream("./File/" + newName);
            BufferedOutputStream bos = new BufferedOutputStream(fos);
//            将文件复制进去
            int d;
            while ((d = bis.read()) != -1) {
                bos.write(d);
            }
            /**
             * 关闭流
             */
            bis.close();
            bos.close();
        }
        System.out.println("复制完毕");
    }
}

/**
 * 思路:
 * 分为几部分考虑.
 * 第一个是要获取到当前目录中的所有文件(思考哪个API可以解决)
 * 第二个是获取到的每一个文件都要复制(复制用什么API)
 * 第三个是复制的文件名，如何重新组建xxx_cp.xxx的名字?
 * 这里要将原文件名拆开后想办法拼接_cp.
 */
